W raporcie poddany analizie został składający się z 12 tabel zbiór danych dotyczący LEGO, pochodzący z bazy Rebrickable. W pierwszej sekcji znajduje się kod odpowiedzialny za import wszystkich wykorzystanych w raporcie bibliotek oraz kod zapewniający powtarzalność rezultatów. Kolejna sekcja prezentuje kod odpowiedzialny za wczytanie danych. Następnym elementem raportu jest opis zbioru danych, czyli krótki opis każdej tabeli i jej parametrów oraz wyświetlenie ich podstawowych statystyk i liczności. W kolejnej sekcji znajduje się analiza danych. Zawarte tam zostały wykresy i tabele podsumowujące dane dotyczące LEGO. W sekcji Trendy przeanalizowano zmiany w LEGO na przestrzeni lat. Sekcja Korelacja zawiera analizę zależności pomiędzy wybranymi cechami zbioru. W sekcji Klasyfikacja przygotowano model uczenia maszynowego próbujący przewidzieć średnią liczbę części na jeden zestaw. Wykorzystano do tego algorytm Random Forest z zastosowaniem walidacji krzyżowej. W ostatniej sekcji zastosowano bibliotekę forecast (model Arima) w celu próby prognozy zmian wartości wybranych cech LEGO w następnych latach.
Najważniejsze wnioski wynikające z całego raportu:
Do stworzenia raportu wykorzystano następujące biblioteki:
library(knitr)
library(dplyr)
library(ggplot2)
library(skimr)
library(plotly)
library(caret)
library(ggeasy)
library(formattable)
library(tidyverse)
library(scales)
library(ggcorrplot)
library(forecast)
W celu uzyskania powtarzalności rezultatów ustawiono ziarno dla generatora liczb pseudolosowych.
set.seed(23)
Poniżej znajduje się kod odpowiedzialny za wczytanie danych z plików.
inventories <- read.csv("rebrickable/inventories.csv")
inventory_parts <- read.csv("rebrickable/inventory_parts.csv")
parts <- read.csv("rebrickable/parts.csv")
part_categories <- read.csv("rebrickable/part_categories.csv")
part_relationships <- read.csv("rebrickable/part_relationships.csv")
elements <- read.csv("rebrickable/elements.csv")
colors <- read.csv("rebrickable/colors.csv")
inventory_minifigs <- read.csv("rebrickable/inventory_minifigs.csv")
minifigs <- read.csv("rebrickable/minifigs.csv")
inventory_sets <- read.csv("rebrickable/inventory_sets.csv")
sets <- read.csv("rebrickable/sets.csv")
themes <- read.csv("rebrickable/themes.csv")
Cały zbiór danych dotyczący klocków LEGO składa się z 12 tabel. Poniżej znajdują się sekcje zawierające opisy każdej z nich, wyświetlające informacje o ich rozmiarze oraz podstawowe statystyki.
Jest to tabela nadrzędna łącząca części i figurki z zestawami LEGO.
Tabela zawiera 37265 rekordów.
Atrybuty w tej tabeli to:
| id | version | set_num | |
|---|---|---|---|
| Min. : 1 | Min. : 1.000 | Length:37265 | |
| 1st Qu.: 14424 | 1st Qu.: 1.000 | Class :character | |
| Median : 54379 | Median : 1.000 | Mode :character | |
| Mean : 61104 | Mean : 1.091 | NA | |
| 3rd Qu.: 88842 | 3rd Qu.: 1.000 | NA | |
| Max. :194312 | Max. :16.000 | NA |
| id | version | set_num |
|---|---|---|
| 1 | 1 | 7922-1 |
| 3 | 1 | 3931-1 |
| 4 | 1 | 6942-1 |
| 15 | 1 | 5158-1 |
| 16 | 1 | 903-1 |
| 17 | 1 | 850950-1 |
| Name | inventories |
| Number of rows | 37265 |
| Number of columns | 3 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 2 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| set_num | 0 | 1 | 3 | 20 | 0 | 35644 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| id | 0 | 1 | 61103.60 | 51380.10 | 1 | 14424 | 54379 | 88842 | 194312 | ▇▆▂▂▂ |
| version | 0 | 1 | 1.09 | 0.58 | 1 | 1 | 1 | 1 | 16 | ▇▁▁▁▁ |
W tej tabeli zostały zawarte informacje o zapasach (nakładach) części
LEGO.
Tabela zawiera 1180987 rekordów.
Atrybuty w tej tabeli to:
| inventory_id | part_num | color_id | quantity | is_spare | img_url | |
|---|---|---|---|---|---|---|
| Min. : 1 | Length:1180987 | Min. : -1.0 | Min. : 1.00 | Length:1180987 | Length:1180987 | |
| 1st Qu.: 9404 | Class :character | 1st Qu.: 4.0 | 1st Qu.: 1.00 | Class :character | Class :character | |
| Median : 22838 | Mode :character | Median : 15.0 | Median : 2.00 | Mode :character | Mode :character | |
| Mean : 50849 | NA | Mean : 131.8 | Mean : 3.37 | NA | NA | |
| 3rd Qu.: 87088 | NA | 3rd Qu.: 71.0 | 3rd Qu.: 4.00 | NA | NA | |
| Max. :194312 | NA | Max. :9999.0 | Max. :3064.00 | NA | NA |
| inventory_id | part_num | color_id | quantity | is_spare | img_url |
|---|---|---|---|---|---|
| 1 | 48379c01 | 72 | 1 | f | https://cdn.rebrickable.com/media/parts/photos/1/48379c01-1-e7daa845-2671-4737-8642-3b1574308155.jpg |
| 1 | 48395 | 7 | 1 | f | https://cdn.rebrickable.com/media/parts/photos/7/48395-7-b9152acf-2fa5-4836-a04d-5b7fd39c2406.jpg |
| 1 | stickerupn0077 | 9999 | 1 | f | |
| 1 | upn0342 | 0 | 1 | f | |
| 1 | upn0350 | 25 | 1 | f | |
| 3 | 2343 | 47 | 1 | f | https://cdn.rebrickable.com/media/parts/elements/3000240.jpg |
| Name | inventory_parts |
| Number of rows | 1180987 |
| Number of columns | 6 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| numeric | 3 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| part_num | 0 | 1 | 1 | 20 | 0 | 51051 | 0 |
| is_spare | 0 | 1 | 1 | 1 | 0 | 2 | 0 |
| img_url | 0 | 1 | 0 | 117 | 8180 | 74266 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| inventory_id | 0 | 1 | 50849.46 | 55136.94 | 1 | 9404 | 22838 | 87088 | 194312 | ▇▂▁▂▁ |
| color_id | 0 | 1 | 131.78 | 862.38 | -1 | 4 | 15 | 71 | 9999 | ▇▁▁▁▁ |
| quantity | 0 | 1 | 3.37 | 9.95 | 1 | 1 | 2 | 4 | 3064 | ▇▁▁▁▁ |
Tabela parts zawiera informacje o częściach LEGO,
które mogą składać się z kilku elementów.
Tabela zawiera
52615 rekordów.
Atrybuty w tej tabeli to:
| part_num | name | part_cat_id | part_material | |
|---|---|---|---|---|
| Length:52615 | Length:52615 | Min. : 1.00 | Length:52615 | |
| Class :character | Class :character | 1st Qu.:17.00 | Class :character | |
| Mode :character | Mode :character | Median :41.00 | Mode :character | |
| NA | NA | Mean :38.91 | NA | |
| NA | NA | 3rd Qu.:60.00 | NA | |
| NA | NA | Max. :68.00 | NA |
| part_num | name | part_cat_id | part_material |
|---|---|---|---|
| 003381 | Sticker Sheet for Set 663-1 | 58 | Plastic |
| 003383 | Sticker Sheet for Sets 618-1, 628-2 | 58 | Plastic |
| 003402 | Sticker Sheet for Sets 310-3, 311-1, 312-3 | 58 | Plastic |
| 003429 | Sticker Sheet for Set 1550-1 | 58 | Plastic |
| 003432 | Sticker Sheet for Sets 357-1, 355-1, 940-1 | 58 | Plastic |
| 003434 | Sticker Sheet for Set 575-2, 653-1, 460-1 | 58 | Plastic |
| Name | parts |
| Number of rows | 52615 |
| Number of columns | 4 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| part_num | 0 | 1 | 1 | 20 | 0 | 52615 | 0 |
| name | 0 | 1 | 3 | 222 | 0 | 52103 | 0 |
| part_material | 0 | 1 | 4 | 16 | 0 | 7 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| part_cat_id | 0 | 1 | 38.91 | 22.08 | 1 | 17 | 41 | 60 | 68 | ▃▃▂▁▇ |
Tabela part_categories zawiera informacje o
kategoriach części LEGO.
Tabela zawiera 66
rekordów.
Atrybuty w tej tabeli to:
| id | name | |
|---|---|---|
| Min. : 1.00 | Length:66 | |
| 1st Qu.:19.25 | Class :character | |
| Median :35.50 | Mode :character | |
| Mean :35.36 | NA | |
| 3rd Qu.:51.75 | NA | |
| Max. :68.00 | NA |
| id | name |
|---|---|
| 1 | Baseplates |
| 3 | Bricks Sloped |
| 4 | Duplo, Quatro and Primo |
| 5 | Bricks Special |
| 6 | Bricks Wedged |
| 7 | Containers |
| Name | part_categories |
| Number of rows | 66 |
| Number of columns | 2 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| name | 0 | 1 | 4 | 44 | 0 | 66 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| id | 0 | 1 | 35.36 | 19.41 | 1 | 19.25 | 35.5 | 51.75 | 68 | ▇▇▇▇▇ |
W tej tabeli zostały zawarte informacje o relacjach między
poszczególnymi częściami.
Tabela zawiera 29977
rekordów.
Atrybuty w tej tabeli to:
| rel_type | child_part_num | parent_part_num | |
|---|---|---|---|
| Length:29977 | Length:29977 | Length:29977 | |
| Class :character | Class :character | Class :character | |
| Mode :character | Mode :character | Mode :character |
| rel_type | child_part_num | parent_part_num |
|---|---|---|
| P | 3626cpr3662 | 3626c |
| P | 87079pr9974 | 87079 |
| P | 3960pr9971 | 3960 |
| R | 98653pr0003 | 98086pr0003 |
| R | 98653pr0003 | 98088pat0003 |
| R | 98653pr0003 | 98089pat0003 |
| Name | part_relationships |
| Number of rows | 29977 |
| Number of columns | 3 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| rel_type | 0 | 1 | 1 | 1 | 0 | 6 | 0 |
| child_part_num | 0 | 1 | 1 | 20 | 0 | 27139 | 0 |
| parent_part_num | 0 | 1 | 1 | 19 | 0 | 4725 | 0 |
W tabeli elements znajdują się informacje o
pojedynczych klockach LEGO.
Tabela zawiera 84138
rekordów.
Atrybuty w tej tabeli to:
| element_id | part_num | color_id | design_id | |
|---|---|---|---|---|
| Min. : 9327 | Length:84138 | Min. : -1.0 | Min. : 1001 | |
| 1st Qu.: 4259774 | Class :character | 1st Qu.: 8.0 | 1st Qu.: 18454 | |
| Median : 6057754 | Mode :character | Median : 28.0 | Median : 41748 | |
| Mean : 5222065 | NA | Mean : 539.7 | Mean : 45570 | |
| 3rd Qu.: 6262024 | NA | 3rd Qu.: 135.0 | 3rd Qu.: 75474 | |
| Max. :61532443 | NA | Max. :9999.0 | Max. :107520 | |
| NA | NA | NA | NA’s :23682 |
| element_id | part_num | color_id | design_id |
|---|---|---|---|
| 6443403 | 2277c01pr0009 | 1 | 2277 |
| 6300211 | 67906c01 | 14 | 67908 |
| 4566309 | 2564 | 0 | 2564 |
| 4275423 | 53657 | 1004 | 53657 |
| 6194308 | 92926 | 71 | 28967 |
| 6229123 | 26561 | 4 | 26561 |
| Name | elements |
| Number of rows | 84138 |
| Number of columns | 4 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 3 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| part_num | 0 | 1 | 2 | 19 | 0 | 33765 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| element_id | 0 | 1.00 | 5222065.12 | 1596842.63 | 9327 | 4259773.50 | 6057754 | 6262024.5 | 61532443 | ▇▁▁▁▁ |
| color_id | 0 | 1.00 | 539.67 | 2044.86 | -1 | 8.00 | 28 | 135.0 | 9999 | ▇▁▁▁▁ |
| design_id | 23682 | 0.72 | 45569.87 | 30750.66 | 1001 | 18453.75 | 41748 | 75474.5 | 107520 | ▇▆▅▅▃ |
Tabela colors zawiera informacje o oficjalnych
kolorach klocków LEGO.
Tabela zawiera 263
rekordy.
Atrybuty w tej tabeli to:
| id | name | rgb | is_trans | |
|---|---|---|---|---|
| Min. : -1.0 | Length:263 | Length:263 | Length:263 | |
| 1st Qu.: 83.0 | Class :character | Class :character | Class :character | |
| Median :1005.0 | Mode :character | Mode :character | Mode :character | |
| Mean : 651.4 | NA | NA | NA | |
| 3rd Qu.:1070.5 | NA | NA | NA | |
| Max. :9999.0 | NA | NA | NA |
| id | name | rgb | is_trans |
|---|---|---|---|
| -1 | [Unknown] | 0033B2 | f |
| 0 | Black | 05131D | f |
| 1 | Blue | 0055BF | f |
| 2 | Green | 237841 | f |
| 3 | Dark Turquoise | 008F9B | f |
| 4 | Red | C91A09 | f |
| Name | colors |
| Number of rows | 263 |
| Number of columns | 4 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| name | 0 | 1 | 3 | 28 | 0 | 263 | 0 |
| rgb | 0 | 1 | 6 | 6 | 0 | 223 | 0 |
| is_trans | 0 | 1 | 1 | 1 | 0 | 2 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| id | 0 | 1 | 651.38 | 750.55 | -1 | 83 | 1005 | 1070.5 | 9999 | ▇▁▁▁▁ |
W tej tabeli zawarte zostały informacje o zapasach (nakładzie)
figurek LEGO.
Tabela zawiera 20858 rekordów.
Atrybuty w tej tabeli to:
| inventory_id | fig_num | quantity | |
|---|---|---|---|
| Min. : 3 | Length:20858 | Min. : 1.000 | |
| 1st Qu.: 7869 | Class :character | 1st Qu.: 1.000 | |
| Median : 15681 | Mode :character | Median : 1.000 | |
| Mean : 43010 | NA | Mean : 1.062 | |
| 3rd Qu.: 66834 | NA | 3rd Qu.: 1.000 | |
| Max. :194312 | NA | Max. :100.000 |
| inventory_id | fig_num | quantity |
|---|---|---|
| 3 | fig-001549 | 1 |
| 4 | fig-000764 | 1 |
| 19 | fig-000555 | 1 |
| 25 | fig-000574 | 1 |
| 26 | fig-000842 | 1 |
| 26 | fig-008641 | 1 |
| Name | inventory_minifigs |
| Number of rows | 20858 |
| Number of columns | 3 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 2 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| fig_num | 0 | 1 | 10 | 10 | 0 | 13455 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| inventory_id | 0 | 1 | 43010.44 | 52256.78 | 3 | 7869 | 15681 | 66834 | 194312 | ▇▁▁▁▁ |
| quantity | 0 | 1 | 1.06 | 0.78 | 1 | 1 | 1 | 1 | 100 | ▇▁▁▁▁ |
W tabela minifigs znajdują się informacje o
figurkach LEGO.
Tabela zawiera 13764 rekordy.
Atrybuty w tej tabeli to:
| fig_num | name | num_parts | img_url | |
|---|---|---|---|---|
| Length:13764 | Length:13764 | Min. : 0.000 | Length:13764 | |
| Class :character | Class :character | 1st Qu.: 4.000 | Class :character | |
| Mode :character | Mode :character | Median : 4.000 | Mode :character | |
| NA | NA | Mean : 5.296 | NA | |
| NA | NA | 3rd Qu.: 5.000 | NA | |
| NA | NA | Max. :156.000 | NA |
| fig_num | name | num_parts | img_url |
|---|---|---|---|
| fig-000001 | Toy Store Employee | 4 | https://cdn.rebrickable.com/media/sets/fig-000001.jpg |
| fig-000002 | Customer Kid | 4 | https://cdn.rebrickable.com/media/sets/fig-000002.jpg |
| fig-000003 | Assassin Droid, White | 8 | https://cdn.rebrickable.com/media/sets/fig-000003.jpg |
| fig-000004 | Man, White Torso, Black Legs, Brown Hair | 4 | https://cdn.rebrickable.com/media/sets/fig-000004.jpg |
| fig-000005 | Captain America with Short Legs | 3 | https://cdn.rebrickable.com/media/sets/fig-000005.jpg |
| fig-000006 | Lloyd Avatar | 5 | https://cdn.rebrickable.com/media/sets/fig-000006.jpg |
| Name | minifigs |
| Number of rows | 13764 |
| Number of columns | 4 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| fig_num | 0 | 1 | 10 | 10 | 0 | 13764 | 0 |
| name | 0 | 1 | 1 | 148 | 0 | 13354 | 0 |
| img_url | 0 | 1 | 53 | 53 | 0 | 13764 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| num_parts | 0 | 1 | 5.3 | 6.03 | 0 | 4 | 4 | 5 | 156 | ▇▁▁▁▁ |
Tabela inventory_sets zawiera informacje o zapasach
(nakładzie) zestawów LEGO.
Tabela zawiera 4358
rekordów.
Atrybuty w tej tabeli to:
| inventory_id | set_num | quantity | |
|---|---|---|---|
| Min. : 35 | Length:4358 | Min. : 1.000 | |
| 1st Qu.: 8076 | Class :character | 1st Qu.: 1.000 | |
| Median : 16423 | Mode :character | Median : 1.000 | |
| Mean : 52519 | NA | Mean : 1.813 | |
| 3rd Qu.: 98685 | NA | 3rd Qu.: 1.000 | |
| Max. :191576 | NA | Max. :60.000 |
| inventory_id | set_num | quantity |
|---|---|---|
| 35 | 75911-1 | 1 |
| 35 | 75912-1 | 1 |
| 39 | 75048-1 | 1 |
| 39 | 75053-1 | 1 |
| 50 | 4515-1 | 1 |
| 50 | 4520-1 | 2 |
| Name | inventory_sets |
| Number of rows | 4358 |
| Number of columns | 3 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 2 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| set_num | 0 | 1 | 5 | 20 | 0 | 3171 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| inventory_id | 0 | 1 | 52518.95 | 59063.13 | 35 | 8076 | 16423 | 98685 | 191576 | ▇▁▁▂▁ |
| quantity | 0 | 1 | 1.81 | 5.67 | 1 | 1 | 1 | 1 | 60 | ▇▁▁▁▁ |
Tabela sets zawiera informacje o oficjalnych
kolorach klocków LEGO.
Tabela zawiera 21880
rekordów.
Atrybuty w tej tabeli to:
| set_num | name | year | theme_id | num_parts | img_url | |
|---|---|---|---|---|---|---|
| Length:21880 | Length:21880 | Min. :1949 | Min. : 1 | Min. : 0.0 | Length:21880 | |
| Class :character | Class :character | 1st Qu.:2001 | 1st Qu.:273 | 1st Qu.: 3.0 | Class :character | |
| Mode :character | Mode :character | Median :2012 | Median :497 | Median : 31.0 | Mode :character | |
| NA | NA | Mean :2008 | Mean :442 | Mean : 161.4 | NA | |
| NA | NA | 3rd Qu.:2018 | 3rd Qu.:608 | 3rd Qu.: 139.0 | NA | |
| NA | NA | Max. :2024 | Max. :752 | Max. :11695.0 | NA |
| set_num | name | year | theme_id | num_parts | img_url |
|---|---|---|---|---|---|
| 001-1 | Gears | 1965 | 1 | 43 | https://cdn.rebrickable.com/media/sets/001-1.jpg |
| 0011-2 | Town Mini-Figures | 1979 | 67 | 12 | https://cdn.rebrickable.com/media/sets/0011-2.jpg |
| 0011-3 | Castle 2 for 1 Bonus Offer | 1987 | 199 | 0 | https://cdn.rebrickable.com/media/sets/0011-3.jpg |
| 0012-1 | Space Mini-Figures | 1979 | 143 | 12 | https://cdn.rebrickable.com/media/sets/0012-1.jpg |
| 0013-1 | Space Mini-Figures | 1979 | 143 | 12 | https://cdn.rebrickable.com/media/sets/0013-1.jpg |
| 0014-1 | Space Mini-Figures | 1979 | 143 | 2 | https://cdn.rebrickable.com/media/sets/0014-1.jpg |
| Name | sets |
| Number of rows | 21880 |
| Number of columns | 6 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| numeric | 3 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| set_num | 0 | 1 | 3 | 20 | 0 | 21880 | 0 |
| name | 0 | 1 | 2 | 93 | 0 | 18752 | 0 |
| img_url | 0 | 1 | 46 | 63 | 0 | 21880 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| year | 0 | 1 | 2007.76 | 13.96 | 1949 | 2001 | 2012 | 2018 | 2024 | ▁▁▁▃▇ |
| theme_id | 0 | 1 | 441.97 | 215.53 | 1 | 273 | 497 | 608 | 752 | ▃▃▃▇▇ |
| num_parts | 0 | 1 | 161.38 | 418.14 | 0 | 3 | 31 | 139 | 11695 | ▇▁▁▁▁ |
W tej tabeli zawarte zostały informacje o oryginalnych kategoriach
(tematykach) zestawów, jak i o współpracach np. (Lego Star Wars).
Tabela zawiera 468 rekordów.
Atrybuty w tej tabeli to:
| id | name | parent_id | |
|---|---|---|---|
| Min. : 1.0 | Length:468 | Min. : 1.0 | |
| 1st Qu.:250.5 | Class :character | 1st Qu.:186.0 | |
| Median :466.0 | Mode :character | Median :411.0 | |
| Mean :433.5 | NA | Mean :360.6 | |
| 3rd Qu.:625.2 | NA | 3rd Qu.:512.5 | |
| Max. :752.0 | NA | Max. :697.0 | |
| NA | NA | NA’s :145 |
| id | name | parent_id |
|---|---|---|
| 1 | Technic | NA |
| 3 | Competition | 1 |
| 4 | Expert Builder | 1 |
| 16 | RoboRiders | 1 |
| 17 | Speed Slammers | 1 |
| 18 | Star Wars | 1 |
| Name | themes |
| Number of rows | 468 |
| Number of columns | 3 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 2 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| name | 0 | 1 | 2 | 42 | 0 | 385 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| id | 0 | 1.00 | 433.46 | 216.55 | 1 | 250.5 | 466 | 625.25 | 752 | ▅▅▅▆▇ |
| parent_id | 145 | 0.69 | 360.64 | 197.19 | 1 | 186.0 | 411 | 512.50 | 697 | ▅▃▂▇▂ |
W tej sekcji dokonano analizy wczytanych danych w celu wykrycia ciekawych zależności oraz znalezienia pojawiających się na przestrzeni lat trendów dotyczących klocków LEGO.
Poniższy wykres przedstawia 10 najczęściej występujących figurek w zestawach LEGO.
Z wykresu wynika, że najbardziej popularną figurką jest figurka szkieletu, która występuje w 43 zestawach.
Poniżej znajduje się wykres kołowy oraz tabela podsumowująca procentowy rozkład materiałów, z których wykonano części LEGO. Niemalże wszystkie z nich (aż około 98,88%) zostały wykonane z plastiku. Następnym najczęściej używanym materiałem jest guma (około 0.71%).
| Materiał | Liczba części | Procent |
|---|---|---|
| Plastic | 1167738 | 98.8781% |
| Rubber | 8440 | 0.7147% |
| Cardboard/Paper | 2367 | 0.2004% |
| Cloth | 2029 | 0.1718% |
| Flexible Plastic | 245 | 0.0207% |
| Metal | 101 | 0.0086% |
| Foam | 67 | 0.0057% |
Poniżej znajduje się wykres przedstawiający 10 tematyk (motywów), w których jest najwięcej zestawów.
Z powyższego wykresu wynika, że najpopularniejszą tematyką (motywem) są Books, gdyż w tej kategorii są 973 zestawy.
Następna analiza dotyczy wielkości zestawów w zbiorze danych. Poniżej znajduje się wykres i tabela prezentująca 10 najbardziej złożonych zestawów LEGO ze zbioru Rebrickable.
| Nazwa | Liczba części | |
|---|---|---|
| World Map | 11695 | |
| Eiffel Tower | 10001 | |
| The Ultimate Battle for Chima | 9987 | |
| Titanic | 9092 | |
| Colosseum | 9036 | |
| Millennium Falcon | 7541 | |
| AT-AT | 6785 | |
| The Razor Crest | 6194 | |
| Lord of the Rings: Rivendell | 6182 | |
| NINJAGO City Markets | 6163 |
Największym zestawem LEGO w podanym zbiorze danych jest World Map, który składa się z dokładnie 11695 części.
W podanym zbiorze danym warto również było dokonać analizy popularności kolorów. Poniżej znajduje się wykres przedstawiający 10 najpopularniejszych kolorów części.
Z powyższego wykresu wynika, że najpopularniejeszymi kolorami części LEGO są czarny i biały.
Poniżej znajduje się wykres przedstawiający 10 najczęściej występujących kategorii (rodzajów) części.
Z powyższego wykresu wynika, że najliczniejszą kategorią jest Minifig Upper Body, do której należy 6329 części.
Kolejna analiza dotyczy popularności części w zestawach (biorąc pod uwagę również kolor). Poniżej znajduje się wykres oraz tabela przedstawiająca 10 najpopularniejszych części w zestawach LEGO.
| Nr części | Nazwa części | Łączna liczba wystąpień części | |
|---|---|---|---|
| 2780 | Technic Pin with Friction Ridges Lengthwise and Center Slots | 4769 | |
| 6141 | Plate Round 1 x 1 with Solid Stud | 2922 | |
| 3023 | Plate 1 x 2 | 2630 | |
| 6141 | Plate Round 1 x 1 with Solid Stud | 2371 | |
| 3673 | Technic Pin without Friction Ridges Lengthwise | 2312 | |
| 43093 | Technic Axle Pin with Friction Ridges Lengthwise | 2264 | |
| 3023 | Plate 1 x 2 | 2256 | |
| 4274 | Technic Pin 1/2 | 2237 | |
| 3022 | Plate 2 x 2 | 2098 | |
| 3020 | Plate 2 x 4 | 2092 |
Najczęściej występującą częścią w zestawach jest Technic Pin with Friction Ridges Lengthwise and Center Slots, który znalazł sie łącznie 4769 razy we wszystkich zestawach LEGO.
Dokonano również analizy dotyczącej transparentności części (czy część jest przezroczysta). Poniżej znajduje sie wykres oraz tabela przedstawiająca, ile jest transparentnych i nietransparentnych części.
| Transparentność | Liczba części | [%] |
|---|---|---|
| Nie | 78966 | 94% |
| Tak | 5172 | 6% |
Na podstawie wykresu i tabeli można stwierdzić, że zdecydowana większość (94%) części jest nieprzezroczysta.
Następna analiza ma na celu znalezienie najbardziej złożonych tematyk (motywów) tj. takich, w których skład wchodzą inne tematyki (motywy). Poniżej znajduje się wykres przedstawiający 10 motywów z największą liczbą podmotywów.
W tej sekcji dokonano analizy zmian związanych z LEGO, jakie zachodziły na przestrzeni lat.
Poniżej znajduje się wykres pokazujący jak zmieniała się liczba nowych tematyk na przestrzeni lat (1949-2023).
Kolejna analiza dotyczy średniej liczby części wchodzącej w skład zestawów na przestrzeni lat (1949-2023).
Poniżej znajduje się wykres przedstawiający wykorzystanie figurek w zestawach. Pierwsze figurki LEGO pojawiły się w 1975 roku.
W tej sekcji przeanalizowano liczbę zestawów pojawiających się na przestrzeni lat.
Poniżej znajduje się wykres pokazujący jak na przestrzeni lat zmieniała się średnia liczba elementów w jednej części.
Poniżej znajduje się wykres przedstawiający korelację pomiędzy poszczególnymi parametrami w zbiorze.
| year | new_themes_count | set_mean_parts | sets_count | figures_count | mean_elements_per_part |
|---|---|---|---|---|---|
| 1975 | 16 | 134.78049 | 41 | 29 | 1.471095 |
| 1976 | 22 | 142.66234 | 77 | 46 | 1.493260 |
| 1977 | 21 | 77.76991 | 113 | 23 | 1.460081 |
| 1978 | 15 | 140.74026 | 77 | 68 | 1.412309 |
| 1979 | 12 | 95.85106 | 94 | 93 | 1.420263 |
| 1980 | 20 | 105.50000 | 110 | 79 | 1.425809 |
| 1981 | 14 | 94.28916 | 83 | 56 | 1.500832 |
| 1982 | 17 | 66.47126 | 87 | 48 | 1.523148 |
| 1983 | 17 | 95.00000 | 74 | 75 | 1.513671 |
| 1984 | 17 | 78.06316 | 95 | 71 | 1.615942 |
| 1985 | 24 | 105.04023 | 174 | 177 | 1.593271 |
| 1986 | 23 | 95.86335 | 161 | 106 | 1.543458 |
| 1987 | 22 | 66.86864 | 236 | 99 | 1.601319 |
| 1988 | 21 | 125.03614 | 83 | 94 | 1.612245 |
| 1989 | 22 | 90.84444 | 135 | 145 | 1.632727 |
| 1990 | 24 | 164.34783 | 115 | 122 | 1.589951 |
| 1991 | 23 | 132.52381 | 147 | 148 | 1.600510 |
| 1992 | 28 | 105.07971 | 138 | 133 | 1.592417 |
| 1993 | 26 | 126.42754 | 138 | 169 | 1.606391 |
| 1994 | 27 | 104.36471 | 170 | 136 | 1.594595 |
| 1995 | 32 | 127.89175 | 194 | 105 | 1.577492 |
| 1996 | 38 | 164.03077 | 195 | 256 | 1.591061 |
| 1997 | 37 | 107.12632 | 285 | 208 | 1.642443 |
| 1998 | 52 | 124.79808 | 416 | 324 | 1.609894 |
| 1999 | 49 | 96.01344 | 372 | 269 | 1.607719 |
| 2000 | 55 | 93.02475 | 404 | 342 | 1.635996 |
| 2001 | 57 | 87.68791 | 455 | 201 | 1.617753 |
| 2002 | 55 | 94.86034 | 580 | 359 | 1.639563 |
| 2003 | 64 | 128.14367 | 529 | 259 | 1.617796 |
| 2004 | 61 | 131.50655 | 458 | 287 | 1.638071 |
| 2005 | 61 | 175.99751 | 402 | 291 | 1.638939 |
| 2006 | 63 | 173.16509 | 424 | 429 | 1.652358 |
| 2007 | 66 | 169.28723 | 470 | 369 | 1.642818 |
| 2008 | 67 | 183.38646 | 458 | 506 | 1.631956 |
| 2009 | 69 | 155.00000 | 535 | 570 | 1.643905 |
| 2010 | 75 | 181.28137 | 526 | 569 | 1.661913 |
| 2011 | 71 | 134.69903 | 618 | 793 | 1.639226 |
| 2012 | 87 | 132.02759 | 725 | 878 | 1.643258 |
| 2013 | 91 | 148.32032 | 743 | 848 | 1.646148 |
| 2014 | 94 | 136.04668 | 964 | 896 | 1.627954 |
| 2015 | 96 | 163.34173 | 913 | 1025 | 1.641473 |
| 2016 | 95 | 170.35150 | 936 | 1061 | 1.623611 |
| 2017 | 87 | 184.42312 | 969 | 1073 | 1.609554 |
| 2018 | 89 | 180.57308 | 951 | 1043 | 1.603150 |
| 2019 | 86 | 184.67500 | 1040 | 1149 | 1.583741 |
| 2020 | 91 | 204.78185 | 1036 | 1227 | 1.558270 |
| 2021 | 85 | 231.06353 | 1149 | 1301 | 1.535192 |
| 2022 | 78 | 274.58847 | 1023 | 1106 | 1.519895 |
| 2023 | 85 | 307.82895 | 912 | 1197 | 1.483833 |
| year | new_themes_count | set_mean_parts | sets_count | figures_count | mean_elements_per_part | |
|---|---|---|---|---|---|---|
| year | 1.0000000 | 0.9582409 | 0.7233515 | 0.9387636 | 0.9142305 | 0.5046801 |
| new_themes_count | 0.9582409 | 1.0000000 | 0.6550353 | 0.9503790 | 0.9135261 | 0.4704375 |
| set_mean_parts | 0.7233515 | 0.6550353 | 1.0000000 | 0.6887085 | 0.7524310 | 0.0024544 |
| sets_count | 0.9387636 | 0.9503790 | 0.6887085 | 1.0000000 | 0.9700925 | 0.3025752 |
| figures_count | 0.9142305 | 0.9135261 | 0.7524310 | 0.9700925 | 1.0000000 | 0.2265509 |
| mean_elements_per_part | 0.5046801 | 0.4704375 | 0.0024544 | 0.3025752 | 0.2265509 | 1.0000000 |
W tej sekcji wykorzystano uczenie maszynowe w celu predykcji średniej liczby części w zestawach. Wykorzystano do tego algorytm Random Forest z użyciem walidacji krzyżowej.
inTraining <- createDataPartition(y = dataset$set_mean_parts, p = .7, list = FALSE)
training <- dataset[ inTraining,]
testing <- dataset[-inTraining,]
ctrl <- trainControl(method = "cv", number=10)
rfGrid <- expand.grid(mtry = 1:30)
fit <- train(
set_mean_parts ~ .,
data = training,
method = "rf",
trControl = ctrl,
tuneGrid = rfGrid,
ntree = 20)
fit
## Random Forest
##
## 37 samples
## 5 predictor
##
## No pre-processing
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 33, 33, 35, 34, 33, 33, ...
## Resampling results across tuning parameters:
##
## mtry RMSE Rsquared MAE
## 1 27.95597 0.7523095 22.94473
## 2 30.26546 0.7450520 25.47801
## 3 27.51097 0.7480646 22.77059
## 4 28.90024 0.6936379 24.51701
## 5 28.24055 0.7051577 23.48441
## 6 30.00875 0.7059354 25.57717
## 7 28.01896 0.7323098 23.29654
## 8 26.57732 0.7318102 22.47492
## 9 29.64234 0.6907196 25.34591
## 10 28.00618 0.7049286 23.26473
## 11 29.30981 0.7296562 24.02080
## 12 28.75095 0.7090346 24.35170
## 13 27.60619 0.7305205 23.68135
## 14 29.72423 0.7193529 24.98283
## 15 29.48735 0.7439887 24.13587
## 16 27.05973 0.7360077 23.20496
## 17 28.62300 0.7074503 23.71597
## 18 29.63426 0.7017150 25.04597
## 19 28.66220 0.7187713 23.22313
## 20 31.00487 0.7077293 26.05903
## 21 26.01643 0.7227936 21.95382
## 22 28.06467 0.7084066 23.45392
## 23 27.22992 0.7111318 22.60203
## 24 29.66535 0.7006079 25.44821
## 25 28.73162 0.7010999 24.22727
## 26 27.97048 0.7165169 22.55339
## 27 28.40390 0.7134761 23.54947
## 28 29.89694 0.7258457 24.12682
## 29 30.22594 0.6849923 26.70829
## 30 28.65499 0.7185829 24.13425
##
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was mtry = 21.
rfPredict <- predict(fit, newdata = testing)
testing %>%
select(year, set_mean_parts) -> data_to_compare
data_to_compare$Predictions <- rfPredict
ggplot(data_to_compare, aes(x = year)) +
geom_line(aes(y = set_mean_parts, color = "Rzeczywista liczba części"), size = 1) +
geom_line(aes(y = Predictions, color = "Przewidywana liczba części"), size = 1) +
labs(x = "Rok", y = "Liczba części") +
scale_color_manual(name = "Legenda", values = c("Rzeczywista liczba części" = "#00abff", "Przewidywana liczba części" = "red")) +
theme_bw() -> ml_plot
ggplotly(ml_plot)
Analizując podany zbiór danych podjęto również próbę predykcji wartości niektórych cech LEGO w przyszłych latach. Wykorzystano w tym celu bibliotekę forecast (model Arima).
dataset_ts <- ts(dataset[, c(2,4,5)], start=1975, frequency=1)
arima_models <- vector("list", length = ncol(dataset_ts))
for (i in seq_along(arima_models)) {
arima_models[[i]] <- auto.arima(dataset_ts[, i])
}
generate_forecasts <- function(model, h = 15) {
forecast(model, h = h)
}
forecasts <- lapply(arima_models, generate_forecasts)
for (i in seq_along(forecasts)) {
cat("\nPredykcja dla", colnames(dataset_ts)[i], ":\n")
print(forecasts[[i]])
plot(forecasts[[i]],
main=paste0("Predykcja dla cechy ", colnames(dataset_ts)[i]),
xlab="Rok",
ylab="Wartość")
}
##
## Predykcja dla new_themes_count :
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2024 84.88862 78.57729 91.19995 75.23627 94.54097
## 2025 86.68446 78.86364 94.50527 74.72356 98.64536
## 2026 87.96879 78.64695 97.29064 73.71227 102.22532
## 2027 89.39031 78.83531 99.94531 73.24783 105.53280
## 2028 90.77504 79.10269 102.44739 72.92372 108.62636
## 2029 92.16963 79.48136 104.85790 72.76460 111.57467
## 2030 93.56158 79.93205 107.19111 72.71701 114.40615
## 2031 94.95424 80.44460 109.46388 72.76366 117.14482
## 2032 96.34670 81.00731 111.68609 72.88713 119.80628
## 2033 97.73922 81.61273 113.86571 73.07588 122.40256
## 2034 99.13173 82.25480 116.00865 73.32069 124.94276
## 2035 100.52423 82.92885 118.11962 73.61441 127.43405
## 2036 101.91674 83.63110 120.20238 73.95127 129.88221
## 2037 103.30925 84.35848 122.26001 74.32656 132.29194
## 2038 104.70175 85.10843 124.29508 74.73635 134.66716
##
## Predykcja dla sets_count :
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2024 930.1458 842.5181 1017.774 796.1307 1064.161
## 2025 948.2917 824.3673 1072.216 758.7657 1137.818
## 2026 966.4375 814.6618 1118.213 734.3166 1198.558
## 2027 984.5833 809.3278 1159.839 716.5532 1252.614
## 2028 1002.7292 806.7875 1198.671 703.0623 1302.396
## 2029 1020.8750 806.2317 1235.518 692.6064 1349.144
## 2030 1039.0208 807.1796 1270.862 684.4502 1393.591
## 2031 1057.1667 809.3179 1305.015 678.1148 1436.219
## 2032 1075.3125 812.4292 1338.196 673.2672 1477.358
## 2033 1093.4583 816.3550 1370.562 669.6654 1517.251
## 2034 1111.6042 820.9758 1402.233 667.1264 1556.082
## 2035 1129.7500 826.1985 1433.301 665.5081 1593.992
## 2036 1147.8958 831.9495 1463.842 664.6976 1631.094
## 2037 1166.0417 838.1686 1493.915 664.6031 1667.480
## 2038 1184.1875 844.8067 1523.568 665.1493 1703.226
##
## Predykcja dla figures_count :
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2024 1194.233 1100.033 1288.433 1050.166 1338.299
## 2025 1228.881 1118.978 1338.783 1060.799 1396.962
## 2026 1248.599 1117.425 1379.773 1047.986 1449.212
## 2027 1274.275 1127.600 1420.949 1049.956 1498.594
## 2028 1297.573 1135.897 1459.249 1050.311 1544.836
## 2029 1321.820 1146.788 1496.853 1054.131 1589.509
## 2030 1345.689 1158.113 1533.265 1058.816 1632.561
## 2031 1369.708 1170.428 1568.988 1064.936 1674.481
## 2032 1393.668 1183.314 1604.021 1071.960 1715.376
## 2033 1417.651 1196.786 1638.516 1079.867 1755.435
## 2034 1441.625 1210.724 1672.526 1088.492 1794.758
## 2035 1465.603 1225.085 1706.121 1097.762 1833.443
## 2036 1489.579 1239.814 1739.344 1107.596 1871.562
## 2037 1513.555 1254.874 1772.237 1117.936 1909.175
## 2038 1537.532 1270.231 1804.833 1128.730 1946.334